package it.unibo.iss.domotica.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import it.unibo.iss.domotica.services.DomoticDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDomoticDslParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_DOUBLE", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'LOW'", "'MEDIUM'", "'HIGH'", "'ESSENTIAL'", "'OPTIONAL'", "'DomoticSystem'", "';'", "'package'", "'propertiesPath='", "'Elettrodomestico'", "'consumption='", "'usage='", "'Sensor'", "'for'", "'minConsumption='", "'maxConsumption='"
    };
    public static final int RULE_ID=4;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=11;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=9;
    public static final int EOF=-1;
    public static final int RULE_DOUBLE=6;
    public static final int RULE_ML_COMMENT=8;
    public static final int T__19=19;
    public static final int RULE_STRING=5;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=7;
    public static final int RULE_WS=10;

    // delegates
    // delegators


        public InternalDomoticDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalDomoticDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalDomoticDslParser.tokenNames; }
    public String getGrammarFileName() { return "../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g"; }


     
     	private DomoticDslGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(DomoticDslGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleSystem"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:60:1: entryRuleSystem : ruleSystem EOF ;
    public final void entryRuleSystem() throws RecognitionException {
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:61:1: ( ruleSystem EOF )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:62:1: ruleSystem EOF
            {
             before(grammarAccess.getSystemRule()); 
            pushFollow(FOLLOW_ruleSystem_in_entryRuleSystem61);
            ruleSystem();

            state._fsp--;

             after(grammarAccess.getSystemRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSystem68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleSystem"


    // $ANTLR start "ruleSystem"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:69:1: ruleSystem : ( ( rule__System__Group__0 ) ) ;
    public final void ruleSystem() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:73:2: ( ( ( rule__System__Group__0 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:74:1: ( ( rule__System__Group__0 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:74:1: ( ( rule__System__Group__0 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:75:1: ( rule__System__Group__0 )
            {
             before(grammarAccess.getSystemAccess().getGroup()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:76:1: ( rule__System__Group__0 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:76:2: rule__System__Group__0
            {
            pushFollow(FOLLOW_rule__System__Group__0_in_ruleSystem94);
            rule__System__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getSystemAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSystem"


    // $ANTLR start "entryRulePackage"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:88:1: entryRulePackage : rulePackage EOF ;
    public final void entryRulePackage() throws RecognitionException {
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:89:1: ( rulePackage EOF )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:90:1: rulePackage EOF
            {
             before(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage121);
            rulePackage();

            state._fsp--;

             after(grammarAccess.getPackageRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage128); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:97:1: rulePackage : ( ( rule__Package__Group__0 ) ) ;
    public final void rulePackage() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:101:2: ( ( ( rule__Package__Group__0 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:102:1: ( ( rule__Package__Group__0 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:102:1: ( ( rule__Package__Group__0 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:103:1: ( rule__Package__Group__0 )
            {
             before(grammarAccess.getPackageAccess().getGroup()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:104:1: ( rule__Package__Group__0 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:104:2: rule__Package__Group__0
            {
            pushFollow(FOLLOW_rule__Package__Group__0_in_rulePackage154);
            rule__Package__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleProperties"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:116:1: entryRuleProperties : ruleProperties EOF ;
    public final void entryRuleProperties() throws RecognitionException {
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:117:1: ( ruleProperties EOF )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:118:1: ruleProperties EOF
            {
             before(grammarAccess.getPropertiesRule()); 
            pushFollow(FOLLOW_ruleProperties_in_entryRuleProperties181);
            ruleProperties();

            state._fsp--;

             after(grammarAccess.getPropertiesRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProperties188); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleProperties"


    // $ANTLR start "ruleProperties"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:125:1: ruleProperties : ( ( rule__Properties__Group__0 ) ) ;
    public final void ruleProperties() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:129:2: ( ( ( rule__Properties__Group__0 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:130:1: ( ( rule__Properties__Group__0 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:130:1: ( ( rule__Properties__Group__0 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:131:1: ( rule__Properties__Group__0 )
            {
             before(grammarAccess.getPropertiesAccess().getGroup()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:132:1: ( rule__Properties__Group__0 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:132:2: rule__Properties__Group__0
            {
            pushFollow(FOLLOW_rule__Properties__Group__0_in_ruleProperties214);
            rule__Properties__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPropertiesAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleProperties"


    // $ANTLR start "entryRuleElettrodomestico"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:144:1: entryRuleElettrodomestico : ruleElettrodomestico EOF ;
    public final void entryRuleElettrodomestico() throws RecognitionException {
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:145:1: ( ruleElettrodomestico EOF )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:146:1: ruleElettrodomestico EOF
            {
             before(grammarAccess.getElettrodomesticoRule()); 
            pushFollow(FOLLOW_ruleElettrodomestico_in_entryRuleElettrodomestico241);
            ruleElettrodomestico();

            state._fsp--;

             after(grammarAccess.getElettrodomesticoRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElettrodomestico248); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleElettrodomestico"


    // $ANTLR start "ruleElettrodomestico"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:153:1: ruleElettrodomestico : ( ( rule__Elettrodomestico__Group__0 ) ) ;
    public final void ruleElettrodomestico() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:157:2: ( ( ( rule__Elettrodomestico__Group__0 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:158:1: ( ( rule__Elettrodomestico__Group__0 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:158:1: ( ( rule__Elettrodomestico__Group__0 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:159:1: ( rule__Elettrodomestico__Group__0 )
            {
             before(grammarAccess.getElettrodomesticoAccess().getGroup()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:160:1: ( rule__Elettrodomestico__Group__0 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:160:2: rule__Elettrodomestico__Group__0
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__0_in_ruleElettrodomestico274);
            rule__Elettrodomestico__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getElettrodomesticoAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleElettrodomestico"


    // $ANTLR start "entryRuleSensor"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:172:1: entryRuleSensor : ruleSensor EOF ;
    public final void entryRuleSensor() throws RecognitionException {
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:173:1: ( ruleSensor EOF )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:174:1: ruleSensor EOF
            {
             before(grammarAccess.getSensorRule()); 
            pushFollow(FOLLOW_ruleSensor_in_entryRuleSensor301);
            ruleSensor();

            state._fsp--;

             after(grammarAccess.getSensorRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSensor308); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleSensor"


    // $ANTLR start "ruleSensor"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:181:1: ruleSensor : ( ( rule__Sensor__Group__0 ) ) ;
    public final void ruleSensor() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:185:2: ( ( ( rule__Sensor__Group__0 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:186:1: ( ( rule__Sensor__Group__0 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:186:1: ( ( rule__Sensor__Group__0 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:187:1: ( rule__Sensor__Group__0 )
            {
             before(grammarAccess.getSensorAccess().getGroup()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:188:1: ( rule__Sensor__Group__0 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:188:2: rule__Sensor__Group__0
            {
            pushFollow(FOLLOW_rule__Sensor__Group__0_in_ruleSensor334);
            rule__Sensor__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getSensorAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSensor"


    // $ANTLR start "ruleConsumption"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:201:1: ruleConsumption : ( ( rule__Consumption__Alternatives ) ) ;
    public final void ruleConsumption() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:205:1: ( ( ( rule__Consumption__Alternatives ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:206:1: ( ( rule__Consumption__Alternatives ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:206:1: ( ( rule__Consumption__Alternatives ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:207:1: ( rule__Consumption__Alternatives )
            {
             before(grammarAccess.getConsumptionAccess().getAlternatives()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:208:1: ( rule__Consumption__Alternatives )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:208:2: rule__Consumption__Alternatives
            {
            pushFollow(FOLLOW_rule__Consumption__Alternatives_in_ruleConsumption371);
            rule__Consumption__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getConsumptionAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConsumption"


    // $ANTLR start "ruleUsage"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:220:1: ruleUsage : ( ( rule__Usage__Alternatives ) ) ;
    public final void ruleUsage() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:224:1: ( ( ( rule__Usage__Alternatives ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:225:1: ( ( rule__Usage__Alternatives ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:225:1: ( ( rule__Usage__Alternatives ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:226:1: ( rule__Usage__Alternatives )
            {
             before(grammarAccess.getUsageAccess().getAlternatives()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:227:1: ( rule__Usage__Alternatives )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:227:2: rule__Usage__Alternatives
            {
            pushFollow(FOLLOW_rule__Usage__Alternatives_in_ruleUsage407);
            rule__Usage__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getUsageAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleUsage"


    // $ANTLR start "rule__Consumption__Alternatives"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:238:1: rule__Consumption__Alternatives : ( ( ( 'LOW' ) ) | ( ( 'MEDIUM' ) ) | ( ( 'HIGH' ) ) );
    public final void rule__Consumption__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:242:1: ( ( ( 'LOW' ) ) | ( ( 'MEDIUM' ) ) | ( ( 'HIGH' ) ) )
            int alt1=3;
            switch ( input.LA(1) ) {
            case 12:
                {
                alt1=1;
                }
                break;
            case 13:
                {
                alt1=2;
                }
                break;
            case 14:
                {
                alt1=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }

            switch (alt1) {
                case 1 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:243:1: ( ( 'LOW' ) )
                    {
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:243:1: ( ( 'LOW' ) )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:244:1: ( 'LOW' )
                    {
                     before(grammarAccess.getConsumptionAccess().getLOWEnumLiteralDeclaration_0()); 
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:245:1: ( 'LOW' )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:245:3: 'LOW'
                    {
                    match(input,12,FOLLOW_12_in_rule__Consumption__Alternatives443); 

                    }

                     after(grammarAccess.getConsumptionAccess().getLOWEnumLiteralDeclaration_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:250:6: ( ( 'MEDIUM' ) )
                    {
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:250:6: ( ( 'MEDIUM' ) )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:251:1: ( 'MEDIUM' )
                    {
                     before(grammarAccess.getConsumptionAccess().getMEDIUMEnumLiteralDeclaration_1()); 
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:252:1: ( 'MEDIUM' )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:252:3: 'MEDIUM'
                    {
                    match(input,13,FOLLOW_13_in_rule__Consumption__Alternatives464); 

                    }

                     after(grammarAccess.getConsumptionAccess().getMEDIUMEnumLiteralDeclaration_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:257:6: ( ( 'HIGH' ) )
                    {
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:257:6: ( ( 'HIGH' ) )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:258:1: ( 'HIGH' )
                    {
                     before(grammarAccess.getConsumptionAccess().getHIGHEnumLiteralDeclaration_2()); 
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:259:1: ( 'HIGH' )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:259:3: 'HIGH'
                    {
                    match(input,14,FOLLOW_14_in_rule__Consumption__Alternatives485); 

                    }

                     after(grammarAccess.getConsumptionAccess().getHIGHEnumLiteralDeclaration_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Consumption__Alternatives"


    // $ANTLR start "rule__Usage__Alternatives"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:269:1: rule__Usage__Alternatives : ( ( ( 'ESSENTIAL' ) ) | ( ( 'OPTIONAL' ) ) );
    public final void rule__Usage__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:273:1: ( ( ( 'ESSENTIAL' ) ) | ( ( 'OPTIONAL' ) ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==15) ) {
                alt2=1;
            }
            else if ( (LA2_0==16) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:274:1: ( ( 'ESSENTIAL' ) )
                    {
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:274:1: ( ( 'ESSENTIAL' ) )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:275:1: ( 'ESSENTIAL' )
                    {
                     before(grammarAccess.getUsageAccess().getESSENTIALEnumLiteralDeclaration_0()); 
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:276:1: ( 'ESSENTIAL' )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:276:3: 'ESSENTIAL'
                    {
                    match(input,15,FOLLOW_15_in_rule__Usage__Alternatives521); 

                    }

                     after(grammarAccess.getUsageAccess().getESSENTIALEnumLiteralDeclaration_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:281:6: ( ( 'OPTIONAL' ) )
                    {
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:281:6: ( ( 'OPTIONAL' ) )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:282:1: ( 'OPTIONAL' )
                    {
                     before(grammarAccess.getUsageAccess().getOPTIONALEnumLiteralDeclaration_1()); 
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:283:1: ( 'OPTIONAL' )
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:283:3: 'OPTIONAL'
                    {
                    match(input,16,FOLLOW_16_in_rule__Usage__Alternatives542); 

                    }

                     after(grammarAccess.getUsageAccess().getOPTIONALEnumLiteralDeclaration_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Usage__Alternatives"


    // $ANTLR start "rule__System__Group__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:295:1: rule__System__Group__0 : rule__System__Group__0__Impl rule__System__Group__1 ;
    public final void rule__System__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:299:1: ( rule__System__Group__0__Impl rule__System__Group__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:300:2: rule__System__Group__0__Impl rule__System__Group__1
            {
            pushFollow(FOLLOW_rule__System__Group__0__Impl_in_rule__System__Group__0575);
            rule__System__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__1_in_rule__System__Group__0578);
            rule__System__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__0"


    // $ANTLR start "rule__System__Group__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:307:1: rule__System__Group__0__Impl : ( 'DomoticSystem' ) ;
    public final void rule__System__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:311:1: ( ( 'DomoticSystem' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:312:1: ( 'DomoticSystem' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:312:1: ( 'DomoticSystem' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:313:1: 'DomoticSystem'
            {
             before(grammarAccess.getSystemAccess().getDomoticSystemKeyword_0()); 
            match(input,17,FOLLOW_17_in_rule__System__Group__0__Impl606); 
             after(grammarAccess.getSystemAccess().getDomoticSystemKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__0__Impl"


    // $ANTLR start "rule__System__Group__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:326:1: rule__System__Group__1 : rule__System__Group__1__Impl rule__System__Group__2 ;
    public final void rule__System__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:330:1: ( rule__System__Group__1__Impl rule__System__Group__2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:331:2: rule__System__Group__1__Impl rule__System__Group__2
            {
            pushFollow(FOLLOW_rule__System__Group__1__Impl_in_rule__System__Group__1637);
            rule__System__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__2_in_rule__System__Group__1640);
            rule__System__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__1"


    // $ANTLR start "rule__System__Group__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:338:1: rule__System__Group__1__Impl : ( ( rule__System__NameAssignment_1 ) ) ;
    public final void rule__System__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:342:1: ( ( ( rule__System__NameAssignment_1 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:343:1: ( ( rule__System__NameAssignment_1 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:343:1: ( ( rule__System__NameAssignment_1 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:344:1: ( rule__System__NameAssignment_1 )
            {
             before(grammarAccess.getSystemAccess().getNameAssignment_1()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:345:1: ( rule__System__NameAssignment_1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:345:2: rule__System__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__System__NameAssignment_1_in_rule__System__Group__1__Impl667);
            rule__System__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getSystemAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__1__Impl"


    // $ANTLR start "rule__System__Group__2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:355:1: rule__System__Group__2 : rule__System__Group__2__Impl rule__System__Group__3 ;
    public final void rule__System__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:359:1: ( rule__System__Group__2__Impl rule__System__Group__3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:360:2: rule__System__Group__2__Impl rule__System__Group__3
            {
            pushFollow(FOLLOW_rule__System__Group__2__Impl_in_rule__System__Group__2697);
            rule__System__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__3_in_rule__System__Group__2700);
            rule__System__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__2"


    // $ANTLR start "rule__System__Group__2__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:367:1: rule__System__Group__2__Impl : ( ( rule__System__PackageAssignment_2 )? ) ;
    public final void rule__System__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:371:1: ( ( ( rule__System__PackageAssignment_2 )? ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:372:1: ( ( rule__System__PackageAssignment_2 )? )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:372:1: ( ( rule__System__PackageAssignment_2 )? )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:373:1: ( rule__System__PackageAssignment_2 )?
            {
             before(grammarAccess.getSystemAccess().getPackageAssignment_2()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:374:1: ( rule__System__PackageAssignment_2 )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==19) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:374:2: rule__System__PackageAssignment_2
                    {
                    pushFollow(FOLLOW_rule__System__PackageAssignment_2_in_rule__System__Group__2__Impl727);
                    rule__System__PackageAssignment_2();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getSystemAccess().getPackageAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__2__Impl"


    // $ANTLR start "rule__System__Group__3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:384:1: rule__System__Group__3 : rule__System__Group__3__Impl rule__System__Group__4 ;
    public final void rule__System__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:388:1: ( rule__System__Group__3__Impl rule__System__Group__4 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:389:2: rule__System__Group__3__Impl rule__System__Group__4
            {
            pushFollow(FOLLOW_rule__System__Group__3__Impl_in_rule__System__Group__3758);
            rule__System__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__4_in_rule__System__Group__3761);
            rule__System__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__3"


    // $ANTLR start "rule__System__Group__3__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:396:1: rule__System__Group__3__Impl : ( ';' ) ;
    public final void rule__System__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:400:1: ( ( ';' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:401:1: ( ';' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:401:1: ( ';' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:402:1: ';'
            {
             before(grammarAccess.getSystemAccess().getSemicolonKeyword_3()); 
            match(input,18,FOLLOW_18_in_rule__System__Group__3__Impl789); 
             after(grammarAccess.getSystemAccess().getSemicolonKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__3__Impl"


    // $ANTLR start "rule__System__Group__4"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:415:1: rule__System__Group__4 : rule__System__Group__4__Impl rule__System__Group__5 ;
    public final void rule__System__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:419:1: ( rule__System__Group__4__Impl rule__System__Group__5 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:420:2: rule__System__Group__4__Impl rule__System__Group__5
            {
            pushFollow(FOLLOW_rule__System__Group__4__Impl_in_rule__System__Group__4820);
            rule__System__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__5_in_rule__System__Group__4823);
            rule__System__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__4"


    // $ANTLR start "rule__System__Group__4__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:427:1: rule__System__Group__4__Impl : ( ( rule__System__PropertiesAssignment_4 )? ) ;
    public final void rule__System__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:431:1: ( ( ( rule__System__PropertiesAssignment_4 )? ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:432:1: ( ( rule__System__PropertiesAssignment_4 )? )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:432:1: ( ( rule__System__PropertiesAssignment_4 )? )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:433:1: ( rule__System__PropertiesAssignment_4 )?
            {
             before(grammarAccess.getSystemAccess().getPropertiesAssignment_4()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:434:1: ( rule__System__PropertiesAssignment_4 )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==20) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:434:2: rule__System__PropertiesAssignment_4
                    {
                    pushFollow(FOLLOW_rule__System__PropertiesAssignment_4_in_rule__System__Group__4__Impl850);
                    rule__System__PropertiesAssignment_4();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getSystemAccess().getPropertiesAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__4__Impl"


    // $ANTLR start "rule__System__Group__5"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:444:1: rule__System__Group__5 : rule__System__Group__5__Impl rule__System__Group__6 ;
    public final void rule__System__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:448:1: ( rule__System__Group__5__Impl rule__System__Group__6 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:449:2: rule__System__Group__5__Impl rule__System__Group__6
            {
            pushFollow(FOLLOW_rule__System__Group__5__Impl_in_rule__System__Group__5881);
            rule__System__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__System__Group__6_in_rule__System__Group__5884);
            rule__System__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__5"


    // $ANTLR start "rule__System__Group__5__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:456:1: rule__System__Group__5__Impl : ( ( rule__System__ElettrodomesticoAssignment_5 )* ) ;
    public final void rule__System__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:460:1: ( ( ( rule__System__ElettrodomesticoAssignment_5 )* ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:461:1: ( ( rule__System__ElettrodomesticoAssignment_5 )* )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:461:1: ( ( rule__System__ElettrodomesticoAssignment_5 )* )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:462:1: ( rule__System__ElettrodomesticoAssignment_5 )*
            {
             before(grammarAccess.getSystemAccess().getElettrodomesticoAssignment_5()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:463:1: ( rule__System__ElettrodomesticoAssignment_5 )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==21) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:463:2: rule__System__ElettrodomesticoAssignment_5
            	    {
            	    pushFollow(FOLLOW_rule__System__ElettrodomesticoAssignment_5_in_rule__System__Group__5__Impl911);
            	    rule__System__ElettrodomesticoAssignment_5();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);

             after(grammarAccess.getSystemAccess().getElettrodomesticoAssignment_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__5__Impl"


    // $ANTLR start "rule__System__Group__6"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:473:1: rule__System__Group__6 : rule__System__Group__6__Impl ;
    public final void rule__System__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:477:1: ( rule__System__Group__6__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:478:2: rule__System__Group__6__Impl
            {
            pushFollow(FOLLOW_rule__System__Group__6__Impl_in_rule__System__Group__6942);
            rule__System__Group__6__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__6"


    // $ANTLR start "rule__System__Group__6__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:484:1: rule__System__Group__6__Impl : ( ( rule__System__SensorsAssignment_6 )* ) ;
    public final void rule__System__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:488:1: ( ( ( rule__System__SensorsAssignment_6 )* ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:489:1: ( ( rule__System__SensorsAssignment_6 )* )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:489:1: ( ( rule__System__SensorsAssignment_6 )* )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:490:1: ( rule__System__SensorsAssignment_6 )*
            {
             before(grammarAccess.getSystemAccess().getSensorsAssignment_6()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:491:1: ( rule__System__SensorsAssignment_6 )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==24) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:491:2: rule__System__SensorsAssignment_6
            	    {
            	    pushFollow(FOLLOW_rule__System__SensorsAssignment_6_in_rule__System__Group__6__Impl969);
            	    rule__System__SensorsAssignment_6();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

             after(grammarAccess.getSystemAccess().getSensorsAssignment_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__Group__6__Impl"


    // $ANTLR start "rule__Package__Group__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:515:1: rule__Package__Group__0 : rule__Package__Group__0__Impl rule__Package__Group__1 ;
    public final void rule__Package__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:519:1: ( rule__Package__Group__0__Impl rule__Package__Group__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:520:2: rule__Package__Group__0__Impl rule__Package__Group__1
            {
            pushFollow(FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__01014);
            rule__Package__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__1_in_rule__Package__Group__01017);
            rule__Package__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0"


    // $ANTLR start "rule__Package__Group__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:527:1: rule__Package__Group__0__Impl : ( 'package' ) ;
    public final void rule__Package__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:531:1: ( ( 'package' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:532:1: ( 'package' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:532:1: ( 'package' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:533:1: 'package'
            {
             before(grammarAccess.getPackageAccess().getPackageKeyword_0()); 
            match(input,19,FOLLOW_19_in_rule__Package__Group__0__Impl1045); 
             after(grammarAccess.getPackageAccess().getPackageKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0__Impl"


    // $ANTLR start "rule__Package__Group__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:546:1: rule__Package__Group__1 : rule__Package__Group__1__Impl ;
    public final void rule__Package__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:550:1: ( rule__Package__Group__1__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:551:2: rule__Package__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__11076);
            rule__Package__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1"


    // $ANTLR start "rule__Package__Group__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:557:1: rule__Package__Group__1__Impl : ( ( rule__Package__NameAssignment_1 ) ) ;
    public final void rule__Package__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:561:1: ( ( ( rule__Package__NameAssignment_1 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:562:1: ( ( rule__Package__NameAssignment_1 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:562:1: ( ( rule__Package__NameAssignment_1 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:563:1: ( rule__Package__NameAssignment_1 )
            {
             before(grammarAccess.getPackageAccess().getNameAssignment_1()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:564:1: ( rule__Package__NameAssignment_1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:564:2: rule__Package__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl1103);
            rule__Package__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1__Impl"


    // $ANTLR start "rule__Properties__Group__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:578:1: rule__Properties__Group__0 : rule__Properties__Group__0__Impl rule__Properties__Group__1 ;
    public final void rule__Properties__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:582:1: ( rule__Properties__Group__0__Impl rule__Properties__Group__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:583:2: rule__Properties__Group__0__Impl rule__Properties__Group__1
            {
            pushFollow(FOLLOW_rule__Properties__Group__0__Impl_in_rule__Properties__Group__01137);
            rule__Properties__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Properties__Group__1_in_rule__Properties__Group__01140);
            rule__Properties__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__0"


    // $ANTLR start "rule__Properties__Group__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:590:1: rule__Properties__Group__0__Impl : ( 'propertiesPath=' ) ;
    public final void rule__Properties__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:594:1: ( ( 'propertiesPath=' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:595:1: ( 'propertiesPath=' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:595:1: ( 'propertiesPath=' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:596:1: 'propertiesPath='
            {
             before(grammarAccess.getPropertiesAccess().getPropertiesPathKeyword_0()); 
            match(input,20,FOLLOW_20_in_rule__Properties__Group__0__Impl1168); 
             after(grammarAccess.getPropertiesAccess().getPropertiesPathKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__0__Impl"


    // $ANTLR start "rule__Properties__Group__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:609:1: rule__Properties__Group__1 : rule__Properties__Group__1__Impl rule__Properties__Group__2 ;
    public final void rule__Properties__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:613:1: ( rule__Properties__Group__1__Impl rule__Properties__Group__2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:614:2: rule__Properties__Group__1__Impl rule__Properties__Group__2
            {
            pushFollow(FOLLOW_rule__Properties__Group__1__Impl_in_rule__Properties__Group__11199);
            rule__Properties__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Properties__Group__2_in_rule__Properties__Group__11202);
            rule__Properties__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__1"


    // $ANTLR start "rule__Properties__Group__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:621:1: rule__Properties__Group__1__Impl : ( ( rule__Properties__NameAssignment_1 ) ) ;
    public final void rule__Properties__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:625:1: ( ( ( rule__Properties__NameAssignment_1 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:626:1: ( ( rule__Properties__NameAssignment_1 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:626:1: ( ( rule__Properties__NameAssignment_1 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:627:1: ( rule__Properties__NameAssignment_1 )
            {
             before(grammarAccess.getPropertiesAccess().getNameAssignment_1()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:628:1: ( rule__Properties__NameAssignment_1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:628:2: rule__Properties__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Properties__NameAssignment_1_in_rule__Properties__Group__1__Impl1229);
            rule__Properties__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getPropertiesAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__1__Impl"


    // $ANTLR start "rule__Properties__Group__2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:638:1: rule__Properties__Group__2 : rule__Properties__Group__2__Impl ;
    public final void rule__Properties__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:642:1: ( rule__Properties__Group__2__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:643:2: rule__Properties__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Properties__Group__2__Impl_in_rule__Properties__Group__21259);
            rule__Properties__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__2"


    // $ANTLR start "rule__Properties__Group__2__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:649:1: rule__Properties__Group__2__Impl : ( ';' ) ;
    public final void rule__Properties__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:653:1: ( ( ';' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:654:1: ( ';' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:654:1: ( ';' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:655:1: ';'
            {
             before(grammarAccess.getPropertiesAccess().getSemicolonKeyword_2()); 
            match(input,18,FOLLOW_18_in_rule__Properties__Group__2__Impl1287); 
             after(grammarAccess.getPropertiesAccess().getSemicolonKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__Group__2__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:674:1: rule__Elettrodomestico__Group__0 : rule__Elettrodomestico__Group__0__Impl rule__Elettrodomestico__Group__1 ;
    public final void rule__Elettrodomestico__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:678:1: ( rule__Elettrodomestico__Group__0__Impl rule__Elettrodomestico__Group__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:679:2: rule__Elettrodomestico__Group__0__Impl rule__Elettrodomestico__Group__1
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__0__Impl_in_rule__Elettrodomestico__Group__01324);
            rule__Elettrodomestico__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__1_in_rule__Elettrodomestico__Group__01327);
            rule__Elettrodomestico__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__0"


    // $ANTLR start "rule__Elettrodomestico__Group__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:686:1: rule__Elettrodomestico__Group__0__Impl : ( 'Elettrodomestico' ) ;
    public final void rule__Elettrodomestico__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:690:1: ( ( 'Elettrodomestico' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:691:1: ( 'Elettrodomestico' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:691:1: ( 'Elettrodomestico' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:692:1: 'Elettrodomestico'
            {
             before(grammarAccess.getElettrodomesticoAccess().getElettrodomesticoKeyword_0()); 
            match(input,21,FOLLOW_21_in_rule__Elettrodomestico__Group__0__Impl1355); 
             after(grammarAccess.getElettrodomesticoAccess().getElettrodomesticoKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__0__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:705:1: rule__Elettrodomestico__Group__1 : rule__Elettrodomestico__Group__1__Impl rule__Elettrodomestico__Group__2 ;
    public final void rule__Elettrodomestico__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:709:1: ( rule__Elettrodomestico__Group__1__Impl rule__Elettrodomestico__Group__2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:710:2: rule__Elettrodomestico__Group__1__Impl rule__Elettrodomestico__Group__2
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__1__Impl_in_rule__Elettrodomestico__Group__11386);
            rule__Elettrodomestico__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__2_in_rule__Elettrodomestico__Group__11389);
            rule__Elettrodomestico__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__1"


    // $ANTLR start "rule__Elettrodomestico__Group__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:717:1: rule__Elettrodomestico__Group__1__Impl : ( ( rule__Elettrodomestico__NameAssignment_1 ) ) ;
    public final void rule__Elettrodomestico__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:721:1: ( ( ( rule__Elettrodomestico__NameAssignment_1 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:722:1: ( ( rule__Elettrodomestico__NameAssignment_1 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:722:1: ( ( rule__Elettrodomestico__NameAssignment_1 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:723:1: ( rule__Elettrodomestico__NameAssignment_1 )
            {
             before(grammarAccess.getElettrodomesticoAccess().getNameAssignment_1()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:724:1: ( rule__Elettrodomestico__NameAssignment_1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:724:2: rule__Elettrodomestico__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__NameAssignment_1_in_rule__Elettrodomestico__Group__1__Impl1416);
            rule__Elettrodomestico__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getElettrodomesticoAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__1__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:734:1: rule__Elettrodomestico__Group__2 : rule__Elettrodomestico__Group__2__Impl rule__Elettrodomestico__Group__3 ;
    public final void rule__Elettrodomestico__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:738:1: ( rule__Elettrodomestico__Group__2__Impl rule__Elettrodomestico__Group__3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:739:2: rule__Elettrodomestico__Group__2__Impl rule__Elettrodomestico__Group__3
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__2__Impl_in_rule__Elettrodomestico__Group__21446);
            rule__Elettrodomestico__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__3_in_rule__Elettrodomestico__Group__21449);
            rule__Elettrodomestico__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__2"


    // $ANTLR start "rule__Elettrodomestico__Group__2__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:746:1: rule__Elettrodomestico__Group__2__Impl : ( 'consumption=' ) ;
    public final void rule__Elettrodomestico__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:750:1: ( ( 'consumption=' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:751:1: ( 'consumption=' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:751:1: ( 'consumption=' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:752:1: 'consumption='
            {
             before(grammarAccess.getElettrodomesticoAccess().getConsumptionKeyword_2()); 
            match(input,22,FOLLOW_22_in_rule__Elettrodomestico__Group__2__Impl1477); 
             after(grammarAccess.getElettrodomesticoAccess().getConsumptionKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__2__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:765:1: rule__Elettrodomestico__Group__3 : rule__Elettrodomestico__Group__3__Impl rule__Elettrodomestico__Group__4 ;
    public final void rule__Elettrodomestico__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:769:1: ( rule__Elettrodomestico__Group__3__Impl rule__Elettrodomestico__Group__4 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:770:2: rule__Elettrodomestico__Group__3__Impl rule__Elettrodomestico__Group__4
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__3__Impl_in_rule__Elettrodomestico__Group__31508);
            rule__Elettrodomestico__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__4_in_rule__Elettrodomestico__Group__31511);
            rule__Elettrodomestico__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__3"


    // $ANTLR start "rule__Elettrodomestico__Group__3__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:777:1: rule__Elettrodomestico__Group__3__Impl : ( ( rule__Elettrodomestico__ConsumptionAssignment_3 ) ) ;
    public final void rule__Elettrodomestico__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:781:1: ( ( ( rule__Elettrodomestico__ConsumptionAssignment_3 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:782:1: ( ( rule__Elettrodomestico__ConsumptionAssignment_3 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:782:1: ( ( rule__Elettrodomestico__ConsumptionAssignment_3 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:783:1: ( rule__Elettrodomestico__ConsumptionAssignment_3 )
            {
             before(grammarAccess.getElettrodomesticoAccess().getConsumptionAssignment_3()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:784:1: ( rule__Elettrodomestico__ConsumptionAssignment_3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:784:2: rule__Elettrodomestico__ConsumptionAssignment_3
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__ConsumptionAssignment_3_in_rule__Elettrodomestico__Group__3__Impl1538);
            rule__Elettrodomestico__ConsumptionAssignment_3();

            state._fsp--;


            }

             after(grammarAccess.getElettrodomesticoAccess().getConsumptionAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__3__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__4"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:794:1: rule__Elettrodomestico__Group__4 : rule__Elettrodomestico__Group__4__Impl rule__Elettrodomestico__Group__5 ;
    public final void rule__Elettrodomestico__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:798:1: ( rule__Elettrodomestico__Group__4__Impl rule__Elettrodomestico__Group__5 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:799:2: rule__Elettrodomestico__Group__4__Impl rule__Elettrodomestico__Group__5
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__4__Impl_in_rule__Elettrodomestico__Group__41568);
            rule__Elettrodomestico__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__5_in_rule__Elettrodomestico__Group__41571);
            rule__Elettrodomestico__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__4"


    // $ANTLR start "rule__Elettrodomestico__Group__4__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:806:1: rule__Elettrodomestico__Group__4__Impl : ( 'usage=' ) ;
    public final void rule__Elettrodomestico__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:810:1: ( ( 'usage=' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:811:1: ( 'usage=' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:811:1: ( 'usage=' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:812:1: 'usage='
            {
             before(grammarAccess.getElettrodomesticoAccess().getUsageKeyword_4()); 
            match(input,23,FOLLOW_23_in_rule__Elettrodomestico__Group__4__Impl1599); 
             after(grammarAccess.getElettrodomesticoAccess().getUsageKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__4__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__5"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:825:1: rule__Elettrodomestico__Group__5 : rule__Elettrodomestico__Group__5__Impl rule__Elettrodomestico__Group__6 ;
    public final void rule__Elettrodomestico__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:829:1: ( rule__Elettrodomestico__Group__5__Impl rule__Elettrodomestico__Group__6 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:830:2: rule__Elettrodomestico__Group__5__Impl rule__Elettrodomestico__Group__6
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__5__Impl_in_rule__Elettrodomestico__Group__51630);
            rule__Elettrodomestico__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Elettrodomestico__Group__6_in_rule__Elettrodomestico__Group__51633);
            rule__Elettrodomestico__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__5"


    // $ANTLR start "rule__Elettrodomestico__Group__5__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:837:1: rule__Elettrodomestico__Group__5__Impl : ( ( rule__Elettrodomestico__UsageAssignment_5 ) ) ;
    public final void rule__Elettrodomestico__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:841:1: ( ( ( rule__Elettrodomestico__UsageAssignment_5 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:842:1: ( ( rule__Elettrodomestico__UsageAssignment_5 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:842:1: ( ( rule__Elettrodomestico__UsageAssignment_5 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:843:1: ( rule__Elettrodomestico__UsageAssignment_5 )
            {
             before(grammarAccess.getElettrodomesticoAccess().getUsageAssignment_5()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:844:1: ( rule__Elettrodomestico__UsageAssignment_5 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:844:2: rule__Elettrodomestico__UsageAssignment_5
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__UsageAssignment_5_in_rule__Elettrodomestico__Group__5__Impl1660);
            rule__Elettrodomestico__UsageAssignment_5();

            state._fsp--;


            }

             after(grammarAccess.getElettrodomesticoAccess().getUsageAssignment_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__5__Impl"


    // $ANTLR start "rule__Elettrodomestico__Group__6"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:854:1: rule__Elettrodomestico__Group__6 : rule__Elettrodomestico__Group__6__Impl ;
    public final void rule__Elettrodomestico__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:858:1: ( rule__Elettrodomestico__Group__6__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:859:2: rule__Elettrodomestico__Group__6__Impl
            {
            pushFollow(FOLLOW_rule__Elettrodomestico__Group__6__Impl_in_rule__Elettrodomestico__Group__61690);
            rule__Elettrodomestico__Group__6__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__6"


    // $ANTLR start "rule__Elettrodomestico__Group__6__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:865:1: rule__Elettrodomestico__Group__6__Impl : ( ';' ) ;
    public final void rule__Elettrodomestico__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:869:1: ( ( ';' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:870:1: ( ';' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:870:1: ( ';' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:871:1: ';'
            {
             before(grammarAccess.getElettrodomesticoAccess().getSemicolonKeyword_6()); 
            match(input,18,FOLLOW_18_in_rule__Elettrodomestico__Group__6__Impl1718); 
             after(grammarAccess.getElettrodomesticoAccess().getSemicolonKeyword_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__Group__6__Impl"


    // $ANTLR start "rule__Sensor__Group__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:898:1: rule__Sensor__Group__0 : rule__Sensor__Group__0__Impl rule__Sensor__Group__1 ;
    public final void rule__Sensor__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:902:1: ( rule__Sensor__Group__0__Impl rule__Sensor__Group__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:903:2: rule__Sensor__Group__0__Impl rule__Sensor__Group__1
            {
            pushFollow(FOLLOW_rule__Sensor__Group__0__Impl_in_rule__Sensor__Group__01763);
            rule__Sensor__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group__1_in_rule__Sensor__Group__01766);
            rule__Sensor__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__0"


    // $ANTLR start "rule__Sensor__Group__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:910:1: rule__Sensor__Group__0__Impl : ( 'Sensor' ) ;
    public final void rule__Sensor__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:914:1: ( ( 'Sensor' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:915:1: ( 'Sensor' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:915:1: ( 'Sensor' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:916:1: 'Sensor'
            {
             before(grammarAccess.getSensorAccess().getSensorKeyword_0()); 
            match(input,24,FOLLOW_24_in_rule__Sensor__Group__0__Impl1794); 
             after(grammarAccess.getSensorAccess().getSensorKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__0__Impl"


    // $ANTLR start "rule__Sensor__Group__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:929:1: rule__Sensor__Group__1 : rule__Sensor__Group__1__Impl rule__Sensor__Group__2 ;
    public final void rule__Sensor__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:933:1: ( rule__Sensor__Group__1__Impl rule__Sensor__Group__2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:934:2: rule__Sensor__Group__1__Impl rule__Sensor__Group__2
            {
            pushFollow(FOLLOW_rule__Sensor__Group__1__Impl_in_rule__Sensor__Group__11825);
            rule__Sensor__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group__2_in_rule__Sensor__Group__11828);
            rule__Sensor__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__1"


    // $ANTLR start "rule__Sensor__Group__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:941:1: rule__Sensor__Group__1__Impl : ( 'for' ) ;
    public final void rule__Sensor__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:945:1: ( ( 'for' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:946:1: ( 'for' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:946:1: ( 'for' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:947:1: 'for'
            {
             before(grammarAccess.getSensorAccess().getForKeyword_1()); 
            match(input,25,FOLLOW_25_in_rule__Sensor__Group__1__Impl1856); 
             after(grammarAccess.getSensorAccess().getForKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__1__Impl"


    // $ANTLR start "rule__Sensor__Group__2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:960:1: rule__Sensor__Group__2 : rule__Sensor__Group__2__Impl rule__Sensor__Group__3 ;
    public final void rule__Sensor__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:964:1: ( rule__Sensor__Group__2__Impl rule__Sensor__Group__3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:965:2: rule__Sensor__Group__2__Impl rule__Sensor__Group__3
            {
            pushFollow(FOLLOW_rule__Sensor__Group__2__Impl_in_rule__Sensor__Group__21887);
            rule__Sensor__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group__3_in_rule__Sensor__Group__21890);
            rule__Sensor__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__2"


    // $ANTLR start "rule__Sensor__Group__2__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:972:1: rule__Sensor__Group__2__Impl : ( ( rule__Sensor__ElettrodomesticoAssignment_2 ) ) ;
    public final void rule__Sensor__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:976:1: ( ( ( rule__Sensor__ElettrodomesticoAssignment_2 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:977:1: ( ( rule__Sensor__ElettrodomesticoAssignment_2 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:977:1: ( ( rule__Sensor__ElettrodomesticoAssignment_2 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:978:1: ( rule__Sensor__ElettrodomesticoAssignment_2 )
            {
             before(grammarAccess.getSensorAccess().getElettrodomesticoAssignment_2()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:979:1: ( rule__Sensor__ElettrodomesticoAssignment_2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:979:2: rule__Sensor__ElettrodomesticoAssignment_2
            {
            pushFollow(FOLLOW_rule__Sensor__ElettrodomesticoAssignment_2_in_rule__Sensor__Group__2__Impl1917);
            rule__Sensor__ElettrodomesticoAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getSensorAccess().getElettrodomesticoAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__2__Impl"


    // $ANTLR start "rule__Sensor__Group__3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:989:1: rule__Sensor__Group__3 : rule__Sensor__Group__3__Impl rule__Sensor__Group__4 ;
    public final void rule__Sensor__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:993:1: ( rule__Sensor__Group__3__Impl rule__Sensor__Group__4 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:994:2: rule__Sensor__Group__3__Impl rule__Sensor__Group__4
            {
            pushFollow(FOLLOW_rule__Sensor__Group__3__Impl_in_rule__Sensor__Group__31947);
            rule__Sensor__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group__4_in_rule__Sensor__Group__31950);
            rule__Sensor__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__3"


    // $ANTLR start "rule__Sensor__Group__3__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1001:1: rule__Sensor__Group__3__Impl : ( ( rule__Sensor__Group_3__0 )? ) ;
    public final void rule__Sensor__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1005:1: ( ( ( rule__Sensor__Group_3__0 )? ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1006:1: ( ( rule__Sensor__Group_3__0 )? )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1006:1: ( ( rule__Sensor__Group_3__0 )? )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1007:1: ( rule__Sensor__Group_3__0 )?
            {
             before(grammarAccess.getSensorAccess().getGroup_3()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1008:1: ( rule__Sensor__Group_3__0 )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==26) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1008:2: rule__Sensor__Group_3__0
                    {
                    pushFollow(FOLLOW_rule__Sensor__Group_3__0_in_rule__Sensor__Group__3__Impl1977);
                    rule__Sensor__Group_3__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getSensorAccess().getGroup_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__3__Impl"


    // $ANTLR start "rule__Sensor__Group__4"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1018:1: rule__Sensor__Group__4 : rule__Sensor__Group__4__Impl ;
    public final void rule__Sensor__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1022:1: ( rule__Sensor__Group__4__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1023:2: rule__Sensor__Group__4__Impl
            {
            pushFollow(FOLLOW_rule__Sensor__Group__4__Impl_in_rule__Sensor__Group__42008);
            rule__Sensor__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__4"


    // $ANTLR start "rule__Sensor__Group__4__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1029:1: rule__Sensor__Group__4__Impl : ( ';' ) ;
    public final void rule__Sensor__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1033:1: ( ( ';' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1034:1: ( ';' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1034:1: ( ';' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1035:1: ';'
            {
             before(grammarAccess.getSensorAccess().getSemicolonKeyword_4()); 
            match(input,18,FOLLOW_18_in_rule__Sensor__Group__4__Impl2036); 
             after(grammarAccess.getSensorAccess().getSemicolonKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group__4__Impl"


    // $ANTLR start "rule__Sensor__Group_3__0"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1058:1: rule__Sensor__Group_3__0 : rule__Sensor__Group_3__0__Impl rule__Sensor__Group_3__1 ;
    public final void rule__Sensor__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1062:1: ( rule__Sensor__Group_3__0__Impl rule__Sensor__Group_3__1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1063:2: rule__Sensor__Group_3__0__Impl rule__Sensor__Group_3__1
            {
            pushFollow(FOLLOW_rule__Sensor__Group_3__0__Impl_in_rule__Sensor__Group_3__02077);
            rule__Sensor__Group_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group_3__1_in_rule__Sensor__Group_3__02080);
            rule__Sensor__Group_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__0"


    // $ANTLR start "rule__Sensor__Group_3__0__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1070:1: rule__Sensor__Group_3__0__Impl : ( 'minConsumption=' ) ;
    public final void rule__Sensor__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1074:1: ( ( 'minConsumption=' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1075:1: ( 'minConsumption=' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1075:1: ( 'minConsumption=' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1076:1: 'minConsumption='
            {
             before(grammarAccess.getSensorAccess().getMinConsumptionKeyword_3_0()); 
            match(input,26,FOLLOW_26_in_rule__Sensor__Group_3__0__Impl2108); 
             after(grammarAccess.getSensorAccess().getMinConsumptionKeyword_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__0__Impl"


    // $ANTLR start "rule__Sensor__Group_3__1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1089:1: rule__Sensor__Group_3__1 : rule__Sensor__Group_3__1__Impl rule__Sensor__Group_3__2 ;
    public final void rule__Sensor__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1093:1: ( rule__Sensor__Group_3__1__Impl rule__Sensor__Group_3__2 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1094:2: rule__Sensor__Group_3__1__Impl rule__Sensor__Group_3__2
            {
            pushFollow(FOLLOW_rule__Sensor__Group_3__1__Impl_in_rule__Sensor__Group_3__12139);
            rule__Sensor__Group_3__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group_3__2_in_rule__Sensor__Group_3__12142);
            rule__Sensor__Group_3__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__1"


    // $ANTLR start "rule__Sensor__Group_3__1__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1101:1: rule__Sensor__Group_3__1__Impl : ( ( rule__Sensor__MinConsumptionAssignment_3_1 ) ) ;
    public final void rule__Sensor__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1105:1: ( ( ( rule__Sensor__MinConsumptionAssignment_3_1 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1106:1: ( ( rule__Sensor__MinConsumptionAssignment_3_1 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1106:1: ( ( rule__Sensor__MinConsumptionAssignment_3_1 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1107:1: ( rule__Sensor__MinConsumptionAssignment_3_1 )
            {
             before(grammarAccess.getSensorAccess().getMinConsumptionAssignment_3_1()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1108:1: ( rule__Sensor__MinConsumptionAssignment_3_1 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1108:2: rule__Sensor__MinConsumptionAssignment_3_1
            {
            pushFollow(FOLLOW_rule__Sensor__MinConsumptionAssignment_3_1_in_rule__Sensor__Group_3__1__Impl2169);
            rule__Sensor__MinConsumptionAssignment_3_1();

            state._fsp--;


            }

             after(grammarAccess.getSensorAccess().getMinConsumptionAssignment_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__1__Impl"


    // $ANTLR start "rule__Sensor__Group_3__2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1118:1: rule__Sensor__Group_3__2 : rule__Sensor__Group_3__2__Impl rule__Sensor__Group_3__3 ;
    public final void rule__Sensor__Group_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1122:1: ( rule__Sensor__Group_3__2__Impl rule__Sensor__Group_3__3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1123:2: rule__Sensor__Group_3__2__Impl rule__Sensor__Group_3__3
            {
            pushFollow(FOLLOW_rule__Sensor__Group_3__2__Impl_in_rule__Sensor__Group_3__22199);
            rule__Sensor__Group_3__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Sensor__Group_3__3_in_rule__Sensor__Group_3__22202);
            rule__Sensor__Group_3__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__2"


    // $ANTLR start "rule__Sensor__Group_3__2__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1130:1: rule__Sensor__Group_3__2__Impl : ( 'maxConsumption=' ) ;
    public final void rule__Sensor__Group_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1134:1: ( ( 'maxConsumption=' ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1135:1: ( 'maxConsumption=' )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1135:1: ( 'maxConsumption=' )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1136:1: 'maxConsumption='
            {
             before(grammarAccess.getSensorAccess().getMaxConsumptionKeyword_3_2()); 
            match(input,27,FOLLOW_27_in_rule__Sensor__Group_3__2__Impl2230); 
             after(grammarAccess.getSensorAccess().getMaxConsumptionKeyword_3_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__2__Impl"


    // $ANTLR start "rule__Sensor__Group_3__3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1149:1: rule__Sensor__Group_3__3 : rule__Sensor__Group_3__3__Impl ;
    public final void rule__Sensor__Group_3__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1153:1: ( rule__Sensor__Group_3__3__Impl )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1154:2: rule__Sensor__Group_3__3__Impl
            {
            pushFollow(FOLLOW_rule__Sensor__Group_3__3__Impl_in_rule__Sensor__Group_3__32261);
            rule__Sensor__Group_3__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__3"


    // $ANTLR start "rule__Sensor__Group_3__3__Impl"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1160:1: rule__Sensor__Group_3__3__Impl : ( ( rule__Sensor__MaxConsumptionAssignment_3_3 ) ) ;
    public final void rule__Sensor__Group_3__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1164:1: ( ( ( rule__Sensor__MaxConsumptionAssignment_3_3 ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1165:1: ( ( rule__Sensor__MaxConsumptionAssignment_3_3 ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1165:1: ( ( rule__Sensor__MaxConsumptionAssignment_3_3 ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1166:1: ( rule__Sensor__MaxConsumptionAssignment_3_3 )
            {
             before(grammarAccess.getSensorAccess().getMaxConsumptionAssignment_3_3()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1167:1: ( rule__Sensor__MaxConsumptionAssignment_3_3 )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1167:2: rule__Sensor__MaxConsumptionAssignment_3_3
            {
            pushFollow(FOLLOW_rule__Sensor__MaxConsumptionAssignment_3_3_in_rule__Sensor__Group_3__3__Impl2288);
            rule__Sensor__MaxConsumptionAssignment_3_3();

            state._fsp--;


            }

             after(grammarAccess.getSensorAccess().getMaxConsumptionAssignment_3_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__Group_3__3__Impl"


    // $ANTLR start "rule__System__NameAssignment_1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1186:1: rule__System__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__System__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1190:1: ( ( RULE_ID ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1191:1: ( RULE_ID )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1191:1: ( RULE_ID )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1192:1: RULE_ID
            {
             before(grammarAccess.getSystemAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__System__NameAssignment_12331); 
             after(grammarAccess.getSystemAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__NameAssignment_1"


    // $ANTLR start "rule__System__PackageAssignment_2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1201:1: rule__System__PackageAssignment_2 : ( rulePackage ) ;
    public final void rule__System__PackageAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1205:1: ( ( rulePackage ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1206:1: ( rulePackage )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1206:1: ( rulePackage )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1207:1: rulePackage
            {
             before(grammarAccess.getSystemAccess().getPackagePackageParserRuleCall_2_0()); 
            pushFollow(FOLLOW_rulePackage_in_rule__System__PackageAssignment_22362);
            rulePackage();

            state._fsp--;

             after(grammarAccess.getSystemAccess().getPackagePackageParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__PackageAssignment_2"


    // $ANTLR start "rule__System__PropertiesAssignment_4"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1216:1: rule__System__PropertiesAssignment_4 : ( ruleProperties ) ;
    public final void rule__System__PropertiesAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1220:1: ( ( ruleProperties ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1221:1: ( ruleProperties )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1221:1: ( ruleProperties )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1222:1: ruleProperties
            {
             before(grammarAccess.getSystemAccess().getPropertiesPropertiesParserRuleCall_4_0()); 
            pushFollow(FOLLOW_ruleProperties_in_rule__System__PropertiesAssignment_42393);
            ruleProperties();

            state._fsp--;

             after(grammarAccess.getSystemAccess().getPropertiesPropertiesParserRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__PropertiesAssignment_4"


    // $ANTLR start "rule__System__ElettrodomesticoAssignment_5"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1231:1: rule__System__ElettrodomesticoAssignment_5 : ( ruleElettrodomestico ) ;
    public final void rule__System__ElettrodomesticoAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1235:1: ( ( ruleElettrodomestico ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1236:1: ( ruleElettrodomestico )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1236:1: ( ruleElettrodomestico )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1237:1: ruleElettrodomestico
            {
             before(grammarAccess.getSystemAccess().getElettrodomesticoElettrodomesticoParserRuleCall_5_0()); 
            pushFollow(FOLLOW_ruleElettrodomestico_in_rule__System__ElettrodomesticoAssignment_52424);
            ruleElettrodomestico();

            state._fsp--;

             after(grammarAccess.getSystemAccess().getElettrodomesticoElettrodomesticoParserRuleCall_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__ElettrodomesticoAssignment_5"


    // $ANTLR start "rule__System__SensorsAssignment_6"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1246:1: rule__System__SensorsAssignment_6 : ( ruleSensor ) ;
    public final void rule__System__SensorsAssignment_6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1250:1: ( ( ruleSensor ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1251:1: ( ruleSensor )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1251:1: ( ruleSensor )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1252:1: ruleSensor
            {
             before(grammarAccess.getSystemAccess().getSensorsSensorParserRuleCall_6_0()); 
            pushFollow(FOLLOW_ruleSensor_in_rule__System__SensorsAssignment_62455);
            ruleSensor();

            state._fsp--;

             after(grammarAccess.getSystemAccess().getSensorsSensorParserRuleCall_6_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__System__SensorsAssignment_6"


    // $ANTLR start "rule__Package__NameAssignment_1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1261:1: rule__Package__NameAssignment_1 : ( RULE_STRING ) ;
    public final void rule__Package__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1265:1: ( ( RULE_STRING ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1266:1: ( RULE_STRING )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1266:1: ( RULE_STRING )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1267:1: RULE_STRING
            {
             before(grammarAccess.getPackageAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Package__NameAssignment_12486); 
             after(grammarAccess.getPackageAccess().getNameSTRINGTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__NameAssignment_1"


    // $ANTLR start "rule__Properties__NameAssignment_1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1276:1: rule__Properties__NameAssignment_1 : ( RULE_STRING ) ;
    public final void rule__Properties__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1280:1: ( ( RULE_STRING ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1281:1: ( RULE_STRING )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1281:1: ( RULE_STRING )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1282:1: RULE_STRING
            {
             before(grammarAccess.getPropertiesAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rule__Properties__NameAssignment_12517); 
             after(grammarAccess.getPropertiesAccess().getNameSTRINGTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Properties__NameAssignment_1"


    // $ANTLR start "rule__Elettrodomestico__NameAssignment_1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1291:1: rule__Elettrodomestico__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Elettrodomestico__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1295:1: ( ( RULE_ID ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1296:1: ( RULE_ID )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1296:1: ( RULE_ID )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1297:1: RULE_ID
            {
             before(grammarAccess.getElettrodomesticoAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Elettrodomestico__NameAssignment_12548); 
             after(grammarAccess.getElettrodomesticoAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__NameAssignment_1"


    // $ANTLR start "rule__Elettrodomestico__ConsumptionAssignment_3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1306:1: rule__Elettrodomestico__ConsumptionAssignment_3 : ( ruleConsumption ) ;
    public final void rule__Elettrodomestico__ConsumptionAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1310:1: ( ( ruleConsumption ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1311:1: ( ruleConsumption )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1311:1: ( ruleConsumption )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1312:1: ruleConsumption
            {
             before(grammarAccess.getElettrodomesticoAccess().getConsumptionConsumptionEnumRuleCall_3_0()); 
            pushFollow(FOLLOW_ruleConsumption_in_rule__Elettrodomestico__ConsumptionAssignment_32579);
            ruleConsumption();

            state._fsp--;

             after(grammarAccess.getElettrodomesticoAccess().getConsumptionConsumptionEnumRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__ConsumptionAssignment_3"


    // $ANTLR start "rule__Elettrodomestico__UsageAssignment_5"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1321:1: rule__Elettrodomestico__UsageAssignment_5 : ( ruleUsage ) ;
    public final void rule__Elettrodomestico__UsageAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1325:1: ( ( ruleUsage ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1326:1: ( ruleUsage )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1326:1: ( ruleUsage )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1327:1: ruleUsage
            {
             before(grammarAccess.getElettrodomesticoAccess().getUsageUsageEnumRuleCall_5_0()); 
            pushFollow(FOLLOW_ruleUsage_in_rule__Elettrodomestico__UsageAssignment_52610);
            ruleUsage();

            state._fsp--;

             after(grammarAccess.getElettrodomesticoAccess().getUsageUsageEnumRuleCall_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Elettrodomestico__UsageAssignment_5"


    // $ANTLR start "rule__Sensor__ElettrodomesticoAssignment_2"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1336:1: rule__Sensor__ElettrodomesticoAssignment_2 : ( ( RULE_ID ) ) ;
    public final void rule__Sensor__ElettrodomesticoAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1340:1: ( ( ( RULE_ID ) ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1341:1: ( ( RULE_ID ) )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1341:1: ( ( RULE_ID ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1342:1: ( RULE_ID )
            {
             before(grammarAccess.getSensorAccess().getElettrodomesticoElettrodomesticoCrossReference_2_0()); 
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1343:1: ( RULE_ID )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1344:1: RULE_ID
            {
             before(grammarAccess.getSensorAccess().getElettrodomesticoElettrodomesticoIDTerminalRuleCall_2_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Sensor__ElettrodomesticoAssignment_22645); 
             after(grammarAccess.getSensorAccess().getElettrodomesticoElettrodomesticoIDTerminalRuleCall_2_0_1()); 

            }

             after(grammarAccess.getSensorAccess().getElettrodomesticoElettrodomesticoCrossReference_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__ElettrodomesticoAssignment_2"


    // $ANTLR start "rule__Sensor__MinConsumptionAssignment_3_1"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1355:1: rule__Sensor__MinConsumptionAssignment_3_1 : ( RULE_DOUBLE ) ;
    public final void rule__Sensor__MinConsumptionAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1359:1: ( ( RULE_DOUBLE ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1360:1: ( RULE_DOUBLE )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1360:1: ( RULE_DOUBLE )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1361:1: RULE_DOUBLE
            {
             before(grammarAccess.getSensorAccess().getMinConsumptionDOUBLETerminalRuleCall_3_1_0()); 
            match(input,RULE_DOUBLE,FOLLOW_RULE_DOUBLE_in_rule__Sensor__MinConsumptionAssignment_3_12680); 
             after(grammarAccess.getSensorAccess().getMinConsumptionDOUBLETerminalRuleCall_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__MinConsumptionAssignment_3_1"


    // $ANTLR start "rule__Sensor__MaxConsumptionAssignment_3_3"
    // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1370:1: rule__Sensor__MaxConsumptionAssignment_3_3 : ( RULE_DOUBLE ) ;
    public final void rule__Sensor__MaxConsumptionAssignment_3_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1374:1: ( ( RULE_DOUBLE ) )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1375:1: ( RULE_DOUBLE )
            {
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1375:1: ( RULE_DOUBLE )
            // ../domotica.dsl.ui/src-gen/it/unibo/iss/domotica/ui/contentassist/antlr/internal/InternalDomoticDsl.g:1376:1: RULE_DOUBLE
            {
             before(grammarAccess.getSensorAccess().getMaxConsumptionDOUBLETerminalRuleCall_3_3_0()); 
            match(input,RULE_DOUBLE,FOLLOW_RULE_DOUBLE_in_rule__Sensor__MaxConsumptionAssignment_3_32711); 
             after(grammarAccess.getSensorAccess().getMaxConsumptionDOUBLETerminalRuleCall_3_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Sensor__MaxConsumptionAssignment_3_3"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleSystem_in_entryRuleSystem61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSystem68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__0_in_ruleSystem94 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage121 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage128 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0_in_rulePackage154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperties_in_entryRuleProperties181 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProperties188 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Properties__Group__0_in_ruleProperties214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElettrodomestico_in_entryRuleElettrodomestico241 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElettrodomestico248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__0_in_ruleElettrodomestico274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSensor_in_entryRuleSensor301 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSensor308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__0_in_ruleSensor334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Consumption__Alternatives_in_ruleConsumption371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Usage__Alternatives_in_ruleUsage407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Consumption__Alternatives443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Consumption__Alternatives464 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Consumption__Alternatives485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__Usage__Alternatives521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__Usage__Alternatives542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__0__Impl_in_rule__System__Group__0575 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__System__Group__1_in_rule__System__Group__0578 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__System__Group__0__Impl606 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__1__Impl_in_rule__System__Group__1637 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_rule__System__Group__2_in_rule__System__Group__1640 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__NameAssignment_1_in_rule__System__Group__1__Impl667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__2__Impl_in_rule__System__Group__2697 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_rule__System__Group__3_in_rule__System__Group__2700 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__PackageAssignment_2_in_rule__System__Group__2__Impl727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__3__Impl_in_rule__System__Group__3758 = new BitSet(new long[]{0x0000000001300000L});
    public static final BitSet FOLLOW_rule__System__Group__4_in_rule__System__Group__3761 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__System__Group__3__Impl789 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__4__Impl_in_rule__System__Group__4820 = new BitSet(new long[]{0x0000000001300000L});
    public static final BitSet FOLLOW_rule__System__Group__5_in_rule__System__Group__4823 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__PropertiesAssignment_4_in_rule__System__Group__4__Impl850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__Group__5__Impl_in_rule__System__Group__5881 = new BitSet(new long[]{0x0000000001300000L});
    public static final BitSet FOLLOW_rule__System__Group__6_in_rule__System__Group__5884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__ElettrodomesticoAssignment_5_in_rule__System__Group__5__Impl911 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_rule__System__Group__6__Impl_in_rule__System__Group__6942 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__System__SensorsAssignment_6_in_rule__System__Group__6__Impl969 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__01014 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rule__Package__Group__1_in_rule__Package__Group__01017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Package__Group__0__Impl1045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__11076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl1103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Properties__Group__0__Impl_in_rule__Properties__Group__01137 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rule__Properties__Group__1_in_rule__Properties__Group__01140 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__Properties__Group__0__Impl1168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Properties__Group__1__Impl_in_rule__Properties__Group__11199 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_rule__Properties__Group__2_in_rule__Properties__Group__11202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Properties__NameAssignment_1_in_rule__Properties__Group__1__Impl1229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Properties__Group__2__Impl_in_rule__Properties__Group__21259 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Properties__Group__2__Impl1287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__0__Impl_in_rule__Elettrodomestico__Group__01324 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__1_in_rule__Elettrodomestico__Group__01327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__Elettrodomestico__Group__0__Impl1355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__1__Impl_in_rule__Elettrodomestico__Group__11386 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__2_in_rule__Elettrodomestico__Group__11389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__NameAssignment_1_in_rule__Elettrodomestico__Group__1__Impl1416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__2__Impl_in_rule__Elettrodomestico__Group__21446 = new BitSet(new long[]{0x0000000000007000L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__3_in_rule__Elettrodomestico__Group__21449 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Elettrodomestico__Group__2__Impl1477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__3__Impl_in_rule__Elettrodomestico__Group__31508 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__4_in_rule__Elettrodomestico__Group__31511 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__ConsumptionAssignment_3_in_rule__Elettrodomestico__Group__3__Impl1538 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__4__Impl_in_rule__Elettrodomestico__Group__41568 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__5_in_rule__Elettrodomestico__Group__41571 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Elettrodomestico__Group__4__Impl1599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__5__Impl_in_rule__Elettrodomestico__Group__51630 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__6_in_rule__Elettrodomestico__Group__51633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__UsageAssignment_5_in_rule__Elettrodomestico__Group__5__Impl1660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Elettrodomestico__Group__6__Impl_in_rule__Elettrodomestico__Group__61690 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Elettrodomestico__Group__6__Impl1718 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__0__Impl_in_rule__Sensor__Group__01763 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_rule__Sensor__Group__1_in_rule__Sensor__Group__01766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_rule__Sensor__Group__0__Impl1794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__1__Impl_in_rule__Sensor__Group__11825 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Sensor__Group__2_in_rule__Sensor__Group__11828 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_rule__Sensor__Group__1__Impl1856 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__2__Impl_in_rule__Sensor__Group__21887 = new BitSet(new long[]{0x0000000004040000L});
    public static final BitSet FOLLOW_rule__Sensor__Group__3_in_rule__Sensor__Group__21890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__ElettrodomesticoAssignment_2_in_rule__Sensor__Group__2__Impl1917 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__3__Impl_in_rule__Sensor__Group__31947 = new BitSet(new long[]{0x0000000004040000L});
    public static final BitSet FOLLOW_rule__Sensor__Group__4_in_rule__Sensor__Group__31950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__0_in_rule__Sensor__Group__3__Impl1977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group__4__Impl_in_rule__Sensor__Group__42008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Sensor__Group__4__Impl2036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__0__Impl_in_rule__Sensor__Group_3__02077 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__1_in_rule__Sensor__Group_3__02080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rule__Sensor__Group_3__0__Impl2108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__1__Impl_in_rule__Sensor__Group_3__12139 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__2_in_rule__Sensor__Group_3__12142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__MinConsumptionAssignment_3_1_in_rule__Sensor__Group_3__1__Impl2169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__2__Impl_in_rule__Sensor__Group_3__22199 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__3_in_rule__Sensor__Group_3__22202 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_rule__Sensor__Group_3__2__Impl2230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__Group_3__3__Impl_in_rule__Sensor__Group_3__32261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Sensor__MaxConsumptionAssignment_3_3_in_rule__Sensor__Group_3__3__Impl2288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__System__NameAssignment_12331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_rule__System__PackageAssignment_22362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProperties_in_rule__System__PropertiesAssignment_42393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElettrodomestico_in_rule__System__ElettrodomesticoAssignment_52424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSensor_in_rule__System__SensorsAssignment_62455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Package__NameAssignment_12486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_rule__Properties__NameAssignment_12517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Elettrodomestico__NameAssignment_12548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConsumption_in_rule__Elettrodomestico__ConsumptionAssignment_32579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUsage_in_rule__Elettrodomestico__UsageAssignment_52610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Sensor__ElettrodomesticoAssignment_22645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DOUBLE_in_rule__Sensor__MinConsumptionAssignment_3_12680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DOUBLE_in_rule__Sensor__MaxConsumptionAssignment_3_32711 = new BitSet(new long[]{0x0000000000000002L});

}